package sv.gob.mtps.sib.service;

import java.util.List;

import sv.gob.mtps.sib.model.Bodega;
import sv.gob.mtps.sib.model.FacturaHasProducto;
import sv.gob.mtps.sib.model.Fuentefondo;
import sv.gob.mtps.sib.model.Inventario;
import sv.gob.mtps.sib.model.InventarioHasTransacciones;
import sv.gob.mtps.sib.model.InventarioPedidoVw;
import sv.gob.mtps.sib.model.Objetoespecifico;
import sv.gob.mtps.sib.model.Pedido;
import sv.gob.mtps.sib.model.PedidoHasProducto;
import sv.gob.mtps.sib.model.PedidoMastVw;
import sv.gob.mtps.sib.model.PedidosDetVw;
import sv.gob.mtps.sib.model.ProductoHasObjetoespecifico;
import sv.gob.mtps.sib.model.SeccionUnidadVw;
import sv.gob.mtps.sib.model.Transaccion;

public interface PedidoService {
	public void addPedido(Pedido pedido);
    public List<Pedido> listPedido();
    public void removePedido(Integer id);
    public Pedido findPedido(Integer id);
    public void updatePedido(Pedido pedido);
    
    /*Se agregan los metodos 
     * para los update del detalle 
     * de la Factura*/
    public void addPedidoDet(PedidoHasProducto pedidoDet);
    public List<PedidoHasProducto> listPedidoDet(Integer id);
    public List<PedidoHasProducto> listPedidoDet(Integer id,Integer idProObj);
    public void removePedidoDet(Integer id);
    public PedidoHasProducto findPedidoDet(Integer id);
    public void updatePedidoDet(PedidoHasProducto pedidoDet);
    /*se Busca el 
     * Objeto Especifico*/
    public List<Objetoespecifico> listObjeto();
    /*Se busca 
     * el listado de Bodegas
     */
    public List<Bodega>listBodega();
    /*Busqueda de inventario por bodega,fuente
     *  de fondo y producto_objetoespecifico
     */    
    public List<Inventario> listInvent(int bodega,int fuenteFondo,int producto_objeto);
    /*se agrega inventario*/
    public void addInventario(Inventario inv);
    /*se busca la bodega*/
	public Bodega findBodega(int id);
	/*se Busca el productoObjetoEspecifico*/
	public ProductoHasObjetoespecifico findPrdObj(int id);
	/*metodo que almacena el log de la transaccion*/
	public void addTransaccion(InventarioHasTransacciones transact);
	/*metodo que extrae la transaccion*/
	public Transaccion findTransaccion(int id);
	/*Metodo que actualiza al Inventario*/
	public void updateInventario(Inventario inv);
	/*Metodo que extrae la lista de Transacciones*/
	public List<InventarioHasTransacciones> listTransacciones(int documentoPadre, int hijo,int tipoTran);
	/*Metodo para extraer la lista de inventario y productos*/
	public List<InventarioPedidoVw> listInvent();
	/*se obtiene la seccion*/
	public List<SeccionUnidadVw>listSeccionUnidad();
	/*vista maestro de pedidos*/
	public List<PedidoMastVw>listPedidosMas();	
	/*vista detalle de pedidos*/
	public List<PedidosDetVw>listPedidosDet(int id);
	/*se busca el inventario*/
	public Inventario findInventario(int id);
	
}
